package com.example.demo810.util;

import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

/**
 * @author lzh
 * @date 2020/8/10 - 10:17
 */
@Component
public class RedisUtils {

    /**
     * redis管理平台软件的 ttl单位是秒
     */

    @Resource
    private StringRedisTemplate stringRedisTemplate;


    /**
     * @param key
     * @param value
     * @param timeout：单位：毫秒
     * @Description: 设置缓存，k-v形式
     * @author:
     * @date:
     */
    public void setValue(String key, String value, long timeout) {
        stringRedisTemplate.opsForValue().set(key, value, timeout, TimeUnit.MILLISECONDS);
    }

    /**
     * 缓存基本的对象，Integer、String、实体类等
     *
     * @param key 缓存的键值
     * @param value 缓存的值
     * @param timeout 时间
     * @param timeUnit 时间颗粒度
     */
    public <T> void setCacheDiy(final String key, String value, final Integer timeout, final TimeUnit timeUnit)
    {
        stringRedisTemplate.opsForValue().set(key, value, timeout, timeUnit);
    }

    /**
     * @param key
     * @return
     * @Description: 获取缓存，通过key获取value值
     * @author:
     * @date:
     */
    public String getValue(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }

    /**
     * @param key
     * @Description: 删除缓存
     * @author:
     * @date:
     */
    public void delete(String key) {
        stringRedisTemplate.delete(key);
    }

}


